import ParaChar = require('./ParaChar');
export = OnePara;

/**
 * 文字段
 * @author jackliu
 *
 */
class OnePara {
    // 包含多个字轮廓
    public chars:Array<ParaChar> =  new Array<ParaChar>();
    public w = 0;
    public h = 0;
    
	public constructor() {
	}
	
    // 转成json字符串
    // 参数： frame为true，表示转成frame（所谓frame指的是文字的每个字的x、y、w、h，但不包括文字的每个点）
    public toJson(frame):string{
        frame = (frame)? true:false;
        
        var ret = '{';
        ret +='"chars":[';
        for(var i=0;i<this.chars.length;i++){
            if(i>0){
                ret +=',';
            }
            ret += this.chars[i].toJson(frame);
        }
        ret +=']';
        ret +=',';
        ret +=('"w":'+this.w);
        ret +=',';
        ret +=('"h":'+this.h);
        ret +='}';
        return ret;
    }
    // 从json对象中解析
    // 参数： frame为true，表示从frame中解析（所谓frame指的是文字的每个字的x、y、w、h，但不包括文字的每个点）
    public fromJson (jsonObj, versionId,frame){
        frame = (typeof frame ==undefined || typeof frame ==undefined)? false:frame;
        this.chars.splice(0,this.chars.length);
        for(var i=0;i<jsonObj.chars.length;i++){
            var ch = new ParaChar();
            ch.fromJson(jsonObj.chars[i],versionId, frame);
            this.chars.push(ch);
        }
        this.w = jsonObj.w*1;
        this.h = jsonObj.h*1;
    }
    
    /**
* 转换成SVG格式的字符串：
*      'M 0,20 L 100,160 Q 130,200 150,120 C 190,-40 200,200 300,150 L 400,90 z
*       M 0,20 L 100,160 Q 130,200 150,120 C 190,-40 200,200 300,150 L 400,90 z'
*/
    public toSvgPath=function() {
        var ret="";
        for(var i=0;i<this.chars.length;i++) {
            if(i>0)
                ret+=" ";
            ret+=this.chars[i].toSvgPath();
        }
        return ret;
    }
    
    /**
* 转换成SVG格式的字符串数组：
*      ['M 0,20 L 100,160 Q 130,200 150,120 C 190,-40 200,200 300,150 L 400,90 z',
*       'M 0,20 L 100,160 Q 130,200 150,120 C 190,-40 200,200 300,150 L 400,90 z']
*/
    public toSvgPathArray=function(): Array<string> {
        var ret: Array<string>=new Array<string>();
        for(var i=0;i<this.chars.length;i++) {
            ret=ret.concat(this.chars[i].toSvgPathForGM());
        }
        return ret;
    }
    
    /**
        * 转换成GM使用的SVG格式的字符串，多个字之间以空格分隔：
        *     'path "M 0,20 L 100,160 Q 130,200 150,120 C 190,-40 200,200 300,150 L 400,90 z M 0,20 L 100,160 Q 130,200 150,120 C 190,-40 200,200 300,150 L 400,90 z"  
        *        path "M 0,20 L 100,160 Q 130,200 150,120 C 190,-40 200,200 300,150 L 400,90 z M 0,20 L 100,160 Q 130,200 150,120 C 190,-40 200,200 300,150 L 400,90 z"'
        */
    public toSvgPathForGM=function(): string {
        var ret="";
        for(var i=0;i<this.chars.length;i++) {
            if(i>0)
                ret+=" ";
            ret+=this.chars[i].toSvgPathForGM();
        }
        return ret;
    }
    // 调整复合路径，平移或者缩放
    // 参数
    //		charContour:复合路径
    //		vW:水平方向的平移值或者缩放值
    //		vH:垂直方向的平移值或者缩放值
    // 		type:类型，1 平移  2 缩放
    public adjustPosition(vW,vH,type) {
        for(var i=0; i<this.chars.length; i++) {
            this.chars[i].adjustPosition(vW,vH,type);
        }
    }
    //SJG_MARK_APPEND--------------------


}//SJG_MARK_END-------------------------